การติดตั้ง MariaDB บน Amazon Linux 2023
สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ
เคยใช้งาน MariaDB บน Amazon Linux 2023 กันบ้างไหมครับ?
เนื่องจาก Amazon Linux 2023 (AL2023) เปิดตัวมา ผมจึงต้องการอัปเดต OS ของ Instance ที่ใช้สำหรับจัดการ MariaDB แน่นอนว่าไม่สามารถทำขั้นตอนเดียวกับ Amazon Linux 2 ได้ ครั้งนี้จึงอยากจะมาแนะนำวิธีการติดตั้ง MariaDB บน AL2023 ครับ
หากสนใจวิธีการติดตั้ง MariaDB บน Amazon Linux 2 ดูรายละเอียดได้ที่ลิงก์ด้านล่างนี้ครับ
การติดตั้ง MySQL (MariaDB) และสร้าง Database ใน Amazon Linux 2
MariaDB คืออะไร
MariaDB เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์แบบโอเพ่นซอร์ส (RDBMS) ที่ถูกพัฒนามาจาก MySQL ซึ่งเป็นหนึ่งในฐานข้อมูลที่ได้รับความนิยมมากที่สุด และยังเป็นอีกหนึ่งทางเลือกที่สามารถนำมาใช้แทน MySQL ในการจัดการฐานข้อมูลได้เป็นอย่างดี
สิ่งที่ต้องเตรียม
※EC2 Instance สำหรับติดตั้ง MariaDB
ดูรายละเอียดเกี่ยวกับวิธีการเปิดใช้งาน Amazon Linux 2023 ได้ที่ลิงก์ด้านล่างนี้ครับ
ติดตั้ง MariaDB
การติดตั้ง MariaDB นี้จะรันคำสั่งใน PuTTY ดังนั้นให้ทำการเชื่อมต่อกับ EC2 Instance ด้วย PuTTY หากเชื่อมต่อเตรียมไว้แล้ว เริ่มดำเนินการรันคำสั่งได้เลยครับ
รันคำสั่งเข้าสู่ระบบในฐานะผู้ใช้ที่มีสิทธิ์ root
sudo su -
รันคำสั่ง Update server ให้เป็นปัจจุบัน
yum update -y
รันคำสั่งการติดตั้งและอัปเดตเซิร์ฟเวอร์ MariaDB เวอร์ชัน 10.5 บนระบบปฏิบัติการที่เราใช้งาน (ครั้งนี้ติดตั้งบน Amazon Linux 2023)
yum install mariadb105-server -y
รันคำสั่งตรวจสอบเวอร์ชัน MySQL ที่ติดตั้ง (ครั้งนี้คือ MariaDB)
mysql --version
รันคำสั่งแก้ไขไฟล์ mariadb.cnf
(กรณีนี้เป็นการสร้างไฟล์ใหม่)
vi /etc/my.cnf.d/mariadb.cnf
เมื่อรันคำสั่งแล้วจะแสดงหน้าจอตามรูปภาพด้านล่าง
แล้วกดปุ่ม i
เพื่อให้แสดง -- INSERT --
ที่ด้านล่างซ้ายสุด แล้วเพิ่มสิ่งนี้ลงไป
※การตั้งค่านี้จะทำให้ตัว Server สามารถทำงานกับตัวอักษรที่เข้ารหัสด้วย utf-8 ที่มีความยาวตั้งแต่ 1 - 4 byte ได้
[mysqld] character-set-server=utf8mb4 [client] default-character-set=utf8mb4
เมื่อเพิ่มเสร็จแล้ว ให้บันทึกและออกจากไฟล์ตามด้านล่างนี้
» กดปุ่ม Esc
» พิมพ์ :wq
หรือ :x
+ Enter
แล้วรันคำสั่งเริ่มการทำงาน MariaDB
systemctl start mariadb
รันคำสั่งตรวจสอบสถานะ MariaDB
ถ้าแสดง Active: active (running)
แบบนี้ หมายถึง MariaDB กำลังทำงานอยู่ครับ
systemctl status mariadb
Output (example)
root@ip-172-31-11-165:~
[root@ip-172-31-11-165 ~]# systemctl status mariadb
● mariadb.service - MariaDB 10.5 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; preset: disabled)
Active: active (running) since Fri 2023-08-18 04:11:38 UTC; 20s ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
Process: 3167 ExecStartPre=/usr/libexec/mariadb-check-socket (code=exited, status=0/SUCCESS)
Process: 3189 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS)
Process: 3239 ExecStartPost=/usr/libexec/mariadb-check-upgrade (code=exited, status=0/SUCCESS)
Main PID: 3224 (mariadbd)
Status: "Taking your SQL requests now..."
Tasks: 14 (limit: 1066)
Memory: 83.2M
CPU: 240ms
CGroup: /system.slice/mariadb.service
└─3224 /usr/libexec/mariadbd --basedir=/usr
Aug 18 04:11:37 ip-172-31-11-165.ap-southeast-1.compute.internal systemd[1]: Starting mariadb.service - MariaDB 10.5 database server...
Aug 18 04:11:37 ip-172-31-11-165.ap-southeast-1.compute.internal mariadb-prepare-db-dir[3189]: Database MariaDB is probably initialized in /var/lib/mysql already, nothing is done.
Aug 18 04:11:37 ip-172-31-11-165.ap-southeast-1.compute.internal mariadb-prepare-db-dir[3189]: If this is not the case, make sure the /var/lib/mysql is empty before running mariadb-prepare>
Aug 18 04:11:37 ip-172-31-11-165.ap-southeast-1.compute.internal mariadbd[3224]: 2023-08-18 4:11:37 0 [Note] /usr/libexec/mariadbd (mysqld 10.5.18-MariaDB) starting as process 3224 ...
Aug 18 04:11:38 ip-172-31-11-165.ap-southeast-1.compute.internal systemd[1]: Started mariadb.service - MariaDB 10.5 database server.
lines 1-21/21 (END)
รันคำสั่งเปิดใช้งาน MariaDB
systemctl enable mariadb
Output (example)
root@ip-172-31-11-165:~
[root@ip-172-31-11-165 ~]# systemctl enable mariadb
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.
[root@ip-172-31-11-165 ~]#
เมื่อทำการตั้งค่านี้จะทำให้ MariaDB เริ่มทำงานโดยอัตโนมัติหลังจากที่มีการรีสตาร์ท Linux หรือ Stop/Start EC2 ครับ
ทดสอบการจัดการ Database
เชื่อมต่อ MariaDB
รันคำสั่งเชื่อมต่อกับฐานข้อมูล MariaDB
mysql -u root -h localhost
Output (example)
root@ip-172-31-11-165:~
[root@ip-172-31-3-70 ~]# mysql -u root -h localhost
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.18-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
สร้าง Database
ผมจะทดสอบสร้าง Database ในฐานข้อมูล MariaDB โดยรันคำสั่งต่อไปนี้
ก่อนอื่นรันคำสั่งเรียกดูข้อมูลใน Database
show databases;
Output (example) จะเห็นว่ามี Database เริ่มต้นของ MariaDB Server แสดงแบบนี้
root@ip-172-31-11-165:~
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.001 sec)
MariaDB [(none)]>
รันคำสั่งสร้าง Database โดยเปลี่ยน database_name
เป็นชื่อ Database ที่ต้องการ (ตัวอย่างนี้ใช้ชื่อ tinnakorn
)
CREATE DATABASE database_name;
Output (example)
root@ip-172-31-11-165:~
MariaDB [(none)]> CREATE DATABASE tinnakorn;
Query OK, 1 row affected (0.000 sec)
MariaDB [(none)]>
รันเรียกดูข้อมูลใน Database อีกครั้ง
show databases;
Output (example) จะเห็นว่ามี Database ที่ชื่อ tinnakorn
เพิ่มขึ้นมาแล้ว
root@ip-172-31-11-165:~
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| tinnakorn |
+--------------------+
4 rows in set (0.000 sec)
MariaDB [(none)]>
สร้าง Table
ผมจะทำการสร้าง Table ใน Database ที่ชื่อ tinnakorn
ที่สร้างจากขั้นตอนที่แล้ว
ก่อนอื่นรันคำสั่งเปลี่ยนฐานข้อมูลไปยัง Database ที่เราสร้างขึ้นมา เช่น tinnakorn
(เปลี่ยน "database_name" เป็นชื่อ DB ที่สร้างจากขั้นตอนที่แล้ว)
use database_name;
Output (example)
root@ip-172-31-11-165:~
MariaDB [(none)]> use tinnakorn;
Database changed
MariaDB [tinnakorn]>
รันคำสั่งสร้าง Table โดยเปลี่ยน table_name
เป็นชื่อ Table ที่ต้องการ (ตัวอย่างนี้ใช้ชื่อ test
)
create table table_name (id int, name varchar(30));
Output (example)
root@ip-172-31-11-165:~
MariaDB [tinnakorn]> create table test (id int, name varchar(30));
Query OK, 0 rows affected (0.006 sec)
MariaDB [tinnakorn]>
รันคำสั่งเพิ่มข้อมูลลงในตารางของฐานข้อมูล โดยเปลี่ยน table_name
เป็นชื่อ Table ที่สร้างจากขั้นตอนที่แล้ว (ตัวอย่างนี้จะเพิ่มข้อมูลลงใน Table ที่ชื่อ test
)
insert into table_name value (1, 'test');
Output (example)
root@ip-172-31-11-165:~
MariaDB [tinnakorn]> insert into test value (1, 'test');
Query OK, 1 row affected (0.001 sec)
MariaDB [tinnakorn]>
รันคำสั่งแสดงข้อมูลในตาราง โดยเปลี่ยน table_name
เป็นชื่อ Table ที่สร้างเมื่อสักครู่นี้ (ตัวอย่างนี้จะแสดงข้อมูลของ Table ที่ชื่อ test
)
select * from table_name;
Output (example) จะเห็นว่ามีข้อมูลแสดงขึ้นมาตามที่ Insert จากขั้นตอนที่แล้ว
root@ip-172-31-11-165:~
MariaDB [tinnakorn]> select * from test;
+------+------+
| id | name |
+------+------+
| 1 | test |
+------+------+
1 row in set (0.000 sec)
MariaDB [tinnakorn]>
รันคำสั่งออกจากการเชื่อมต่อกับฐานข้อมูล MariaDB
quit
Output (example)
root@ip-172-31-11-165:~
MariaDB [tinnakorn]> quit
Bye
[root@ip-172-31-11-165 ~]#
สรุป
เราสามารถติดตั้ง MariaDB บน Amazon Linux 2023 เพื่อใช้ MariaDB Server ในการจัดการฐานข้อมูล และใช้ MariaDB Client ในการเชื่อมต่อไปยังฐานข้อมูลอื่นๆ ได้ เช่น RDS เป็นต้น
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
POP จากบริษัท Classmethod (Thailand) ครับ !